home *** CD-ROM | disk | FTP | other *** search
/ GameStar 1998 November (Bonus) / GAMESTAR11B.ISO / ENCYC99 / MM / T620277A.DCR / Scripts_32_Class ScrolledThing.ls < prev    next >
Encoding:
Text File  |  1998-06-29  |  3.4 KB  |  161 lines

  1. property ScrollButtonGod, Slider, slidSprite, slidFirst, slidLast, minSlide, maxSoftSlide, currentSlid, newTicks, thePageBottom
  2.  
  3. on catchEvent me, xEvent
  4.   case xEvent of
  5.     #scrollUp:
  6.       scrollUp(me)
  7.     #scrollDown:
  8.       scrollDown(me)
  9.     otherwise:
  10.       catchEvent(ScrollButtonGod, xEvent)
  11.   end case
  12. end
  13.  
  14. on turnON me
  15.   turnON(ScrollButtonGod)
  16. end
  17.  
  18. on turnOff me
  19.   turnOff(ScrollButtonGod)
  20. end
  21.  
  22. on softSlide me, xInt
  23.   set tempTicks to the ticks
  24.   if tempTicks > newTicks then
  25.     set slideHere to nearJump(me, xInt)
  26.     hardSlide(me, slideHere)
  27.     set newTicks to tempTicks + 6
  28.   end if
  29. end
  30.  
  31. on hardSlide me, xInt
  32.   set slideThere to bestValue(me, xInt)
  33.   moveSlidThing(me, slideThere)
  34. end
  35.  
  36. on crankDown me
  37.   hardSlide(me, slidLast)
  38. end
  39.  
  40. on crankUp me
  41.   hardSlide(me, slidFirst)
  42. end
  43.  
  44. on getMapInfo me
  45.   return [slidFirst, slidLast]
  46. end
  47.  
  48. on changeScrolledMember me, xMember
  49.   crankUp(me)
  50.   set the member of sprite slidSprite to xMember
  51.   if initMapInfo(me) then
  52.     linkUp(Slider, me)
  53.     return 1
  54.   else
  55.     return 0
  56.   end if
  57. end
  58.  
  59. on new me, xSprite, xLineHeight, xPageHeight, xPageBottom
  60.   set slidSprite to xSprite
  61.   puppetSprite(slidSprite, 1)
  62.   set minSlide to xLineHeight
  63.   set maxSoftSlide to xPageHeight
  64.   set thePageBottom to xPageBottom
  65.   return me
  66. end
  67.  
  68. on linkUp me, xScrollButtonGod, xSlider
  69.   set ScrollButtonGod to xScrollButtonGod
  70.   set Slider to xSlider
  71.   return initMapInfo(me)
  72. end
  73.  
  74. on scrollUp me
  75.   scrollOne(me, slidFirst)
  76. end
  77.  
  78. on scrollDown me
  79.   scrollOne(me, slidLast)
  80. end
  81.  
  82. on scrollOne me, xInt
  83.   set tempTicks to the ticks
  84.   if tempTicks > newTicks then
  85.     set slideHere to tinyJump(me, xInt)
  86.     hardSlide(me, slideHere)
  87.     set newTicks to tempTicks + 6
  88.   end if
  89. end
  90.  
  91. on setMinSlide me, xInt
  92.   set minSlide to xInt
  93. end
  94.  
  95. on setMaxSlide me, xInt
  96.   set maxSoftSlide to xInt
  97. end
  98.  
  99. on updateSlider me
  100.   moveSlidThing(me, currentSlid)
  101.   turnOff(ScrollButtonGod)
  102. end
  103.  
  104. on bestValue me, xInt
  105.   set thisValue to xInt - slidFirst
  106.   set thisOff to thisValue mod minSlide
  107.   if thisOff <> 0 then
  108.     set thisValue to thisValue - thisOff
  109.   end if
  110.   return thisValue + slidFirst
  111. end
  112.  
  113. on nearJump me, xInt
  114.   set slideHere to xInt
  115.   if abs(currentSlid - slideHere) > maxSoftSlide then
  116.     if slideHere < currentSlid then
  117.       set slideHere to currentSlid - maxSoftSlide
  118.     else
  119.       set slideHere to currentSlid + maxSoftSlide
  120.     end if
  121.   end if
  122.   return slideHere
  123. end
  124.  
  125. on tinyJump me, xInt
  126.   set slideHere to xInt
  127.   if abs(currentSlid - slideHere) > minSlide then
  128.     if slideHere < currentSlid then
  129.       set slideHere to currentSlid - minSlide
  130.     else
  131.       set slideHere to currentSlid + minSlide
  132.     end if
  133.   end if
  134.   return slideHere
  135. end
  136.  
  137. on moveSlidThing me, xInt
  138.   set currentSlid to xInt
  139.   if currentSlid = slidFirst then
  140.     catchEvent(ScrollButtonGod, #top)
  141.   else
  142.     if currentSlid = slidLast then
  143.       catchEvent(ScrollButtonGod, #bottom)
  144.     else
  145.       catchEvent(ScrollButtonGod, #middle)
  146.     end if
  147.   end if
  148.   set the locV of sprite slidSprite to currentSlid
  149.   reDraw(Slider, xInt)
  150. end
  151.  
  152. on initMapInfo me
  153.   updateStage()
  154.   set slidFirst to the locV of sprite slidSprite
  155.   set currentSlid to slidFirst
  156.   set spaceToBottom to the height of the member of sprite slidSprite - the locV of the regPoint of the member of sprite slidSprite
  157.   set slidLast to thePageBottom - spaceToBottom - minSlide
  158.   set slidLast to slidLast - ((slidLast - slidFirst) mod minSlide)
  159.   return slidLast < slidFirst
  160. end
  161.